home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ntfs / runlist.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  3KB  |  88 lines

  1. /*
  2.  * runlist.h - Exports for runlist handling. Part of the Linux-NTFS project.
  3.  *
  4.  * Copyright (c) 2002 Anton Altaparmakov
  5.  * Copyright (c) 2002 Richard Russon
  6.  *
  7.  * This program/include file is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License as published
  9.  * by the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program/include file is distributed in the hope that it will be
  13.  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  14.  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program (in the main directory of the Linux-NTFS
  19.  * distribution in the file COPYING); if not, write to the Free Software
  20.  * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  21.  */
  22.  
  23. #ifndef _NTFS_RUNLIST_H
  24. #define _NTFS_RUNLIST_H
  25.  
  26. #include "types.h"
  27.  
  28. /* Forward declarations */
  29. typedef struct _runlist_element runlist_element;
  30. typedef runlist_element runlist;
  31.  
  32. #include "attrib.h"
  33. #include "volume.h"
  34.  
  35. /*
  36.  * runlist_element - in memory vcn to lcn mapping array element
  37.  * @vcn:    starting vcn of the current array element
  38.  * @lcn:    starting lcn of the current array element
  39.  * @length:    length in clusters of the current array element
  40.  *
  41.  * The last vcn (in fact the last vcn + 1) is reached when length == 0.
  42.  *
  43.  * When lcn == -1 this means that the count vcns starting at vcn are not
  44.  * physically allocated (i.e. this is a hole / data is sparse).
  45.  */
  46. struct _runlist_element {/* In memory vcn to lcn mapping structure element. */
  47.     VCN vcn;    /* vcn = Starting virtual cluster number. */
  48.     LCN lcn;    /* lcn = Starting logical cluster number. */
  49.     s64 length;    /* Run length in clusters. */
  50. };
  51.  
  52. extern LCN ntfs_rl_vcn_to_lcn(const runlist_element *rl, const VCN vcn);
  53.  
  54. extern s64 ntfs_rl_pread(const ntfs_volume *vol, const runlist_element *rl,
  55.         const s64 pos, s64 count, void *b);
  56. extern s64 ntfs_rl_pwrite(const ntfs_volume *vol, const runlist_element *rl,
  57.         const s64 pos, s64 count, void *b);
  58.  
  59. extern runlist_element *ntfs_runlists_merge(runlist_element *drl,
  60.         runlist_element *srl);
  61.  
  62. extern runlist_element *ntfs_mapping_pairs_decompress(const ntfs_volume *vol,
  63.         const ATTR_RECORD *attr, runlist_element *old_rl);
  64.  
  65. extern int ntfs_get_nr_significant_bytes(const s64 n);
  66.  
  67. extern int ntfs_get_size_for_mapping_pairs(const ntfs_volume *vol,
  68.         const runlist_element *rl, const VCN start_vcn);
  69.  
  70. extern int ntfs_write_significant_bytes(u8 *dst, const u8 *dst_max,
  71.         const s64 n);
  72.  
  73. extern int ntfs_mapping_pairs_build(const ntfs_volume *vol, u8 *dst,
  74.         const int dst_len, const runlist_element *rl,
  75.         const VCN start_vcn, VCN *const stop_vcn);
  76.  
  77. extern int ntfs_rl_truncate(runlist **rl, const VCN start_vcn);
  78.  
  79. extern int ntfs_rl_sparse(runlist *rl);
  80. extern s64 ntfs_rl_get_compressed_size(ntfs_volume *vol, runlist *rl);
  81.  
  82. #ifdef NTFS_TEST
  83. int test_rl_main (int argc, char *argv[]);
  84. #endif
  85.  
  86. #endif /* defined _NTFS_RUNLIST_H */
  87.  
  88.